// Package menu @Title menu[简述该包的主要作用]
// @Description
// @Author  cnHuaShao
// @since v0.0.1
// @Version v1.0.0
// @Date 2024/5/1 0:28
// @Update 2024/5/1 0:28
package menu

import (
	"gopkg.in/guregu/null.v3"
)

// MenuInfo
// @Description: 菜单信息结构体
type MenuInfo struct {
	ID                 int         `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                  // 唯一id
	Title              null.String `gorm:"column:title" json:"title,omitempty"`                           // 标题
	Icon               null.String `gorm:"column:icon" json:"icon,omitempty"`                             // 图标
	Path               null.String `gorm:"column:path" json:"path,omitempty"`                             // 地址
	Component          null.String `gorm:"column:component" json:"component,omitempty"`                   // 绑定的哪个组件
	Children           null.String `gorm:"column:children" json:"children,omitempty"`                     // 子集菜单
	Redirect           null.String `gorm:"column:redirect" json:"redirect,omitempty"`                     // 重定向地址
	Affix              null.String `gorm:"column:affix" json:"affix,omitempty"`                           // 哪些是固定页签
	ParentID           int         `gorm:"column:parentId" json:"parentId,omitempty"`                     // 父级菜单的id
	Name               null.String `gorm:"column:name" json:"name,omitempty"`                             // 同路由中的name，主要是用于保活的左右
	HideInMenu         bool        `gorm:"column:hideInMenu" json:"hideInMenu,omitempty"`                 // 是否隐藏当前菜单
	ParentKeys         null.String `gorm:"column:parentKeys" json:"parentKeys,omitempty"`                 // 如果使用了隐藏，那么点击当前菜单的时候，可以使用父级的key
	IsIframe           bool        `gorm:"column:isIframe" json:"isIframe,omitempty"`                     // 是否套用iframe
	URL                null.String `gorm:"column:url" json:"url"`                                         // 如果当前是iframe的模式，需要有一个跳转的url支撑，其不能和path重复，path还是为路由
	HideInBreadcrumb   bool        `gorm:"column:hideInBreadcrumb" json:"hideInBreadcrumb,omitempty"`     // 是否存在面包屑
	HideChildrenInMenu bool        `gorm:"column:hideChildrenInMenu" json:"hideChildrenInMenu,omitempty"` // 是否需要显示所有的子菜单
	KeepAlive          bool        `gorm:"column:keepAlive" json:"keepAlive,omitempty"`                   // 是否保活
	Target             null.String `gorm:"column:target" json:"target,omitempty"`                         // 全连接跳转模式
	Locale             null.String `gorm:"column:locale" json:"locale,omitempty"`                         // 多语言配置
}

// TableName specifies the table name for MenuInfo model
func (MenuInfo) TableName() string {
	return "menu_info"
}
